package com.symbio.ishenapi.patient.tocken;

import com.symbio.ishenapi.common.controller.BaseController;
import com.symbio.ishenapi.patient.session.TokenProccessor;
import io.jboot.Jboot;
import io.jboot.component.redis.JbootRedis;
import io.jboot.web.controller.annotation.RequestMapping;
import java.util.HashMap;
import java.util.Map;

@RequestMapping("/login")
public class LoginController extends BaseController {

    /**
     * 登录
     */
    public void login() {
        User u = (User) getReqBodyObject(User.class);

        // 用户被禁用
        /*if (u.getStatus() == 0) {
            renderJsonError(40000);
            return;
        }*/
        JbootRedis redis = Jboot.me().getRedis();

        if (null == u.getName()&&"".equals(u.getName()) ){
            renderJsonError(40018);
        }
        if (null == u.getPassword()&&"".equals(u.getPassword()) ){
            renderJsonError(40018);
        }
        String token = TokenProccessor.getInstance().makeToken();  //创建令牌
        Map map = new HashMap();

        Map newMap = new HashMap();
        if(redis.exists(u.getName())){  //判断用户是否存在
            if (null == u.getToken() && "".equals(u.getToken())){ //判断用户是否带有令牌
                u.setToken(token.concat(u.getName()));
                redis.set(u.getName(),u.getToken());    //设置缓存
                newMap.put(u.getName(),u.getToken());   //设置返回map
                renderJsonRet(newMap);
            }
            if (u.getToken() != redis.get(u.getName()) && !u.getToken().equals(redis.get(u.getName()))){
                renderJsonError(40018);
            }
        }
        renderJsonRet(newMap);
    }

    /**
     * 退出
     */
    public void logout(User user) {
        JbootRedis redis = Jboot.me().getRedis();
        //redis.del(getAttr(BYConst.USER_INFO_KEY).toString());
        redis.del(user.getName());
        renderJsonRet(null);
    }
}